home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1983-11-14 | 1.0 KB | 45 lines |
- 0 CLS:PRINT
- 10 PRINT "ROOTS OF POLYNOMIALS: HALF-INTERVAL SEARCH"
- 20 PRINT
- 30 DEF FNR(X)=4*X^4-2.5*X^2-X+0.5: REM - ENTER FUNCTION (DEFFNR(X)="FUNCTION") HERE
- 40 DIM D(3)
- 50 PRINT "(TO END SEARCH ENTER 0,0)"
- 60 PRINT "INTERVAL (LOWER,UPPER LIMIT)";
- 70 INPUT A,B
- 80 IF A < > B THEN 120
- 90 IF A = 0 THEN 430
- 100 PRINT "--INTERVAL LIMITS CAN'T BE EQUAL!--"
- 110 GOTO 60
- 120 IF A < B THEN 150
- 130 PRINT "--LOWER LIMIT MUST BE ENTERED FIRST!--"
- 140 GOTO 60
- 150 A1 = SGN ( FNR(A))
- 160 B1 = SGN ( FNR(B))
- 170 IF A1 * B1 = 0 THEN 360
- 180 IF A1 * B1 < 0 THEN 280
- 190 FOR I = 1 TO 1000
- 200 X = A + RND (2) * (B - A)
- 210 X1 = SGN ( FNR (X))
- 220 IF X1 = 0 THEN 400
- 230 IF A1 * X1 < 0 THEN 270
- 240 NEXT I
- 250 PRINT "NO CHANGE OF SIGN FOUND"
- 260 GOTO 60
- 270 B = X
- 280 D(2 + A1) = A
- 290 D(2 - A1) = B
- 300 Y = (D(1) + D(3)) / 2
- 310 Y1 = SGN ( FNR (Y))
- 320 IF Y1 = 0 THEN 400
- 330 D(2 + Y1) = Y
- 340 IF ABS (D(1) - D(3)) / ABS (D(1) + ABS (D(3))) < 4.999E-06 THEN 400
- 350 GOTO 300
- 360 IF A1 = 0 THEN 390
- 370 Y = B
- 380 GOTO 400
- 390 Y = A
- 400 PRINT "ROOT = ";Y
- 410 PRINT
- 420 GOTO 60
- 430 RUN "MATH"
-